#ifndef __DYNAMICARRAY_H_
#define __DYNAMICARRAY_H_

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#define ElementType void* //万能动态数组

struct DynamicArray;//结构体声明
typedef struct DynamicArray DArray;

DArray* InitDArray();
void InsertDArry(DArray *a,ElementType element);
void printDArray(DArray *a,void (*print)(ElementType));
ElementType FindByElement(DArray *a,ElementType value,bool (*compare)(ElementType,ElementType));
ElementType RemoveByElement(DArray *a,ElementType value,bool (*compare)(ElementType,ElementType));
void FastSort(DArray *a,bool (*compare)(ElementType,ElementType));
ElementType BinarySearch(DArray *a,ElementType value,int (*compare)(ElementType,ElementType));
void ClearDArray(DArray *a,void (*clear)(ElementType));


#endif